package netty.test19Channelhandler;

import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.util.CharsetUtil;

import java.nio.charset.Charset;

public class MyClientHandler extends SimpleChannelInboundHandler<Long> {

    @Override
    protected void channelRead0(ChannelHandlerContext channelHandlerContext, Long aLong) throws Exception {
        System.out.println("客户端收到服务器端的信息为-------"+aLong);
    }

    //重写channelActive发送数据

    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {
        System.out.println("11111111111MyClientHandler执行了");
        //发送一个long类型的数据
        ctx.writeAndFlush(12345L);
        //这里假设发了一个字符串，会出现什么情况呢(因为我们每次读取8个字节，所以MyServerByteDecoder方法会被调用多次，直到
        // 确定没有更多的可读字节，如果那个编码 list不为空的化，就会传到下一个handler),从输出我们可以看到
        //并没有调用我们自己的编码器MyClientLongEncoder 是因为其父类MessageToByteEncoder中有个write方法
        //中acceptOutboundMessage 判断了是不是当前编码器需要处理的数据类型(自定义编码器的 泛型类型)，如果不是的话，就不调用，
        //跳过继续执行下面的handler
        //ctx.writeAndFlush(Unpooled.copiedBuffer("aaaaadfereeewrew", CharsetUtil.UTF_8));
    }
}
